﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DatabaseComponent;
using System.IO;

public partial class ForgetPasswordAR : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            Page.DataBind();

            if (Request["ID"] != null)
            {
                ForgottedPasswordsDB objForgottedPasswordsDB = new ForgottedPasswordsDB(ConnectionStrings.LMS);
                List<ForgottedPasswords> lstForgottedPasswords = objForgottedPasswordsDB.getForgottedPasswordsByGeneratedID(Request["ID"].Trim());
                if (lstForgottedPasswords.Count > 0)
                {
                    

                    PersonsDB objPersonsDB = new PersonsDB(ConnectionStrings.LMS);
                    List<Persons> lstPersons = objPersonsDB.getPersonsByGenID(lstForgottedPasswords[0].PersonID);
                    if (lstPersons.Count > 0)
                    {
                        btnSubmit.Visible = false;
                        txtBadge.Visible = false;
                        txtID.Visible = false;
                        lblIDHead.Visible = false;
                        lblBadgeHead.Visible = false;


                        string password = System.Guid.NewGuid().ToString().Substring(0, 8);

                        lstPersons[0].Password = LMSSecurity.HashPassword(password);
                        objPersonsDB.Update(lstPersons[0]);

                        string strTitle = "اعاة تعيين كلمة المرور";
                        string strMessage = "كلمة المرور الخاصة بك هي : " + password + "\r\n";
                        strMessage += "تسطيع تغييرها من صفحتك الشخصية.";

                        GlobalVars.SendRequestMail(strTitle, GlobalVars.buildMailBody( strMessage.Replace("\r\n","<br />"),true), lstPersons[0].Email);

                        List<ForgottedPasswords> lstForgettedPasswords = objForgottedPasswordsDB.getForgottedPasswordsByPersonID(lstPersons[0].GenID);
                        foreach (ForgottedPasswords obj in lstForgettedPasswords)
                        {
                            objForgottedPasswordsDB.Delete(obj);
                        }


                        lblResult.Text = "تم تغيير كلمة المرور بنجاح.";

                    }
                }
            }

        }
    }
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        if (Page.IsValid)
        {

            PersonsDB objPersonsDB = new PersonsDB(ConnectionStrings.LMS);

            List<Persons> lstPersons = new List<Persons>();

            if (txtBadge.Text.Trim() != "")
            {
                lstPersons = objPersonsDB.getPersonsByBadge(txtBadge.Text);

                lstPersons = new List<Persons>(from obj in lstPersons where obj.ID == "" select obj);


                if (lstPersons.Count == 0)
                {
                    lstPersons = objPersonsDB.getPersonsByID(txtBadge.Text);
                }

            }
           


            if (lstPersons.Count > 0)
            {
                ForgottedPasswordsDB objForgottedPasswordsDB = new ForgottedPasswordsDB(ConnectionStrings.LMS);
                ForgottedPasswords objForgottedPasswords = new ForgottedPasswords();
                objForgottedPasswords.PersonID = lstPersons[0].GenID;
                objForgottedPasswords.GeneratedID = System.Guid.NewGuid().ToString();

                objForgottedPasswordsDB.Insert(objForgottedPasswords);

                string myFullPath = Request.Url.AbsoluteUri;

                string strPageName = Path.GetFileName(myFullPath);

                myFullPath = myFullPath.Substring(0, myFullPath.LastIndexOf(strPageName));

                string link = myFullPath + "ForgetPasswordAR.aspx?ID=" + objForgottedPasswords.GeneratedID;

                //string link = "./ForgetPasswordAR.aspx?ID=" + objForgottedPasswords.GeneratedID;
                //link = ResolveUrl(link);
                
                


                string strTitle = "تأكيد اعادة تعيين كلمة المرور";
                string strMessage = "لقد طلبت استرجاع كلمة المرور , افتح هذا الرابط لاسترجاع كلمة المرور :\r\n";
                strMessage += link + "\r\n";
                strMessage += "اذا كنت لا تريد استرجاع كلمة المرور فقط احذف هذه الرسالة.";

                GlobalVars.SendRequestMail(strTitle, GlobalVars.buildMailBody( strMessage.Replace("\r\n","<br />"),true), lstPersons[0].Email);

                txtBadge.Text = "";
                txtID.Text = "";

                lblResult.Text = "تم ارسال رابط لاعادة تعيين كلمة المرور الى البريد الالكتروني الخاص بك";


            }
            else
            {
                lblError.Text = "من فضلك ادخل رقم موظف او عائلة صالح.";
                txtBadge.Text = "";
                txtID.Text = "";
            }
        }
    }


    protected void cv1_ServerValidate(object source, ServerValidateEventArgs args)
    {
        if (txtBadge.Text.Trim() != "" && txtID.Text.Trim() != "")
        {
            args.IsValid = false;
            return;
        }

        if (txtBadge.Text.Trim() == "" && txtID.Text.Trim() == "")
        {
            args.IsValid = false;
            return;
        }

        args.IsValid = true;

    }

}